var fetch = require('node-fetch');
// function *gen(){
//   var url ='https://api.github.com/users/github';
//   var result = yield fetch(url)
//   console.log(result.bio)
//   console.log(111)
// }
// //Generator 函数封装了一个异步操作，该操作先读取一个远程接口，然后从JSON格式的数据解析信息
// var g = gen();
// var result = g.next();
// result.value.then(function(data){
//   return data.json();
// }).then(function(data){
//   g.next(data)
// })//首先执行Generator函数 获取遍历器 然后用next方法第二行的执行异步任务的第一阶段，由于fetch模块返回的是一个Promise 对象，所以用then方法调用下一个next

// var co = require('co');
// co(g).then(function(){
//     console.log('Generator 函数自动执行完毕')
// })  //co 模块其实就是将两种自动执行器（Thunk 函数和 Promise 对象），包装成一个模块。使用 co 的前提条件是，Generator 函数的yield命令后面，只能是 Thunk 函数或 Promise 对象 

// arrayBuffer()
// blob()
// json()
// text()
// formData()
async function getGen(url){
  let result = await fetch(url);
  let html = await result.json();
 return html
}
getGen('https://api.github.com/users/github').then(v=>{
  console.log(v.bio)
})

async function getTitle(url) {
  let response = await fetch(url);
  let html = await response.text();
  return html.match(/<title>([\s\S]+)<\/title>/i)[1];
}
getTitle('https://tc39.github.io/ecma262/').then(console.log)

async function getList(url){
  let res = await fetch(url);
  let html = await res.json()
  return html
}
var url = "http://tingapi.ting.baidu.com/v1/restserver/ting?type=2&size=20&offset=0&method=baidu.ting.billboard.billList";
getList(url).then(v=>{
  for(var key in v){
   if(key =='song_list'){
       let arrList = v[key]
      
       arrList.map(function(k,v3){
          console.log(k.artist_name+'---'+k.title)
       })
   }
  }
})

function* helloWorldGenerator() {
  yield 'hello';
  yield 'world';
  return 'ending';
}

var hw = helloWorldGenerator();
console.log(hw.next())
// { value: 'hello', done: false }

console.log(hw.next())
// { value: 'world', done: false }

console.log(hw.next())
// { value: 'ending', done: true }

console.log(hw.next())
// { value: undefined, done: true }

